/*
 * Copyright (c) Huawei Technologies Co., Ltd. 2018-2019.
 * Description: OMAP GPIO handling defines and functions
 * Author: liujianping <jianping.liu@huawei.com>
 * Create: 2018-11-14
 */

#ifndef __ARCH_HI138X_GPIO_H__
#define __ARCH_HI138X_GPIO_H__

/* DIR LEVEL */
#define LOW_LEVEL 0
#define HIGH_LEVEL 1
#define INPUT_PIN 0
#define OUTPUT_PIN 1

#define HISI_GPIO_PORT_NUM    3
#define HISI_GPIO0            0
#define HISI_GPIO1            1
#define HISI_GPIO2            0

#define HI_CPU_GPIO_OUTPUT_REG      (0x0)
#define HI_CPU_GPIO_DIR_REG         (0x4)
#define HI_CPU_GPIO_PORT_CTRL_REG   (0x8)
#define HI_CPU_GPIO_INT_EN_REG      (0x30)
#define HI_CPU_GPIO_INT_MASK_REG    (0x34)
#define HI_CPU_GPIO_INT_TYPE_REG    (0x38)
#define HI_CPU_GPIO_INT_POLARITY    (0x3c)
#define HI_CPU_GPIO_INT_CLR_REG     (0x4c)
#define HI_CPU_GPIO_INPUT_REG       (0x50)
#define HI_CPU_GPIO_SYNC_REG        (0x60)

#define GPIO0      0x00000001
#define GPIO1      0x00000002
#define GPIO2      0x00000004
#define GPIO3      0x00000008
#define GPIO4      0x00000010
#define GPIO5      0x00000020
#define GPIO6      0x00000040
#define GPIO7      0x00000080
#define GPIO8      0x00000100
#define GPIO9      0x00000200
#define GPIO10     0x00000400
#define GPIO11     0x00000800
#define GPIO12     0x00001000
#define GPIO13     0x00002000
#define GPIO14     0x00004000
#define GPIO15     0x00008000
#define GPIO16     0x00010000
#define GPIO17     0x00020000
#define GPIO18     0x00040000
#define GPIO19     0x00080000
#define GPIO20     0x00100000
#define GPIO21     0x00200000
#define GPIO22     0x00400000
#define GPIO23     0x00800000
#define GPIO24     0x01000000
#define GPIO25     0x02000000
#define GPIO26     0x04000000
#define GPIO27     0x08000000
#define GPIO28     0x10000000
#define GPIO29     0x20000000
#define GPIO30     0x40000000
#define GPIO31     0x80000000

/* Control by HISI_GPIO1 */
#define GPIO32      0x00000001
#define GPIO33      0x00000002
#define GPIO34      0x00000004
#define GPIO35      0x00000008
#define GPIO36      0x00000010
#define GPIO37      0x00000020
#define GPIO38      0x00000040
#define GPIO39      0x00000080
#define GPIO40      0x00000100
#define GPIO41      0x00000200
#define GPIO42     0x00000400
#define GPIO43     0x00000800
#define GPIO44     0x00001000
#define GPIO45     0x00002000
#define GPIO46     0x00004000
#define GPIO47     0x00008000
#define GPIO48     0x00010000
#define GPIO49     0x00020000
#define GPIO50     0x00040000
#define GPIO51     0x00080000
#define GPIO52     0x00100000
#define GPIO53     0x00200000
#define GPIO54     0x00400000
#define GPIO55     0x00800000
#define GPIO56     0x01000000
#define GPIO57     0x02000000
#define GPIO58     0x04000000
#define GPIO59     0x08000000
#define GPIO60     0x10000000
#define GPIO61     0x20000000
#define GPIO62     0x40000000
#define GPIO63     0x80000000


/* Control by HISI_GPIO2 */
#define GPIO64      0x00000001
#define GPIO65      0x00000002
#define GPIO66      0x00000004
#define GPIO67      0x00000008
#define GPIO68      0x00000010
#define GPIO69      0x00000020
#define GPIO70      0x00000040
#define GPIO71      0x00000080
#define GPIO72      0x00000100
#define GPIO73      0x00000200
#define GPIO74     0x00000400
#define GPIO75     0x00000800
#define GPIO76     0x00001000
#define GPIO77     0x00002000
#define GPIO78     0x00004000
#define GPIO79     0x00008000
#define GPIO80     0x00010000
#define GPIO81     0x00020000
#define GPIO82     0x00040000
#define GPIO83     0x00080000
#define GPIO84     0x00100000
#define GPIO85     0x00200000
#define GPIO86     0x00400000
#define GPIO87     0x00800000
#define GPIO88     0x01000000
#define GPIO89     0x02000000
#define GPIO90     0x04000000
#define GPIO91     0x08000000
#define GPIO92     0x10000000
#define GPIO93     0x20000000
#define GPIO94     0x40000000
#define GPIO95     0x80000000

#endif
